package com.demo.java.OD651_700.OD662;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【天然货仓(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/147044738
 */
public class OdMain {
    public static void main(String[] args) {
        // 输入处理
        Scanner in = new Scanner(System.in);
        int len = in.nextInt(); // 每个货物的大小
        int n = in.nextInt(); // 坑的数量
        in.nextLine();
        String[] str = in.nextLine().split(","); // 读取坑的高度数据
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(str[i]);
        }

        // 边界处理: 由于坑的两边可能有负数，所以要加左右边界
        int[] nums = new int[arr.length + 2];
        System.arraycopy(arr, 0, nums, 1, arr.length);

        // 单调栈
        Stack<Integer> stack = new Stack<>();
        int res = 0;
        for (int i = 0; i < nums.length; i++) {
            // 当栈顶为负数，且当前遍历的元素比栈顶元素要大，弹栈
            while (!stack.isEmpty() && nums[stack.peek()] < 0 && nums[i] > nums[stack.peek()]) {
                // 当前位置的索引和深度
                int index = stack.pop();
                int cur_depth = nums[index];
                if (stack.isEmpty())
                    break;
                int left_index = stack.peek(), left_depth = nums[left_index];
                // 计算可以装水的宽度
                res += (i - left_index - 1) / len * (Math.min(left_depth, nums[i]) - cur_depth);
            }
            stack.push(i);
        }
        System.out.println(res); // 输出能够装入的货物数量
    }
}